package com.example.project.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.project.service.DataSyncService;

import java.util.List;
import java.util.Map;

/**
 * 数据同步控制器
 */
@RestController
@RequestMapping("/system/sync")
public class DataSyncController {

    @Autowired
    private DataSyncService dataSyncService;

    /**
     * 检查第二数据源连接
     */
    @GetMapping("/checkConnection")
    public String checkConnection() {
        boolean isConnected = dataSyncService.checkSyncDataSourceConnection();
        if (isConnected) {
            return "第二数据源连接正常";
        } else {
            return "第二数据源连接失败，请检查配置";
        }
    }

    /**
     * 查看表结构信息
     */
    @GetMapping("/tableInfo/{tableName}")
    public List<Map<String, Object>> getTableInfo(@PathVariable String tableName) {
        return dataSyncService.getTableInfo(tableName);
    }

    /**
     * 同步用户数据
     */
    @GetMapping("/syncUsers")
    public String syncUsers() {
        try {
            dataSyncService.syncUserData();
            return "用户数据同步成功";
        } catch (Exception e) {
            return "用户数据同步失败: " + e.getMessage();
        }
    }

    /**
     * 同步项目数据
     */
    @GetMapping("/syncProjects")
    public String syncProjects() {
        try {
            dataSyncService.syncProjectData();
            return "项目数据同步成功";
        } catch (Exception e) {
            return "项目数据同步失败: " + e.getMessage();
        }
    }

    /**
     * 同步需求数据（xuqiu → issue）- 默认分页（每页1000条）
     */
    @GetMapping("/syncXuqiuToIssue")
    public String syncXuqiuToIssue() {
        try {
            dataSyncService.syncXuqiuToIssue();
            return "需求数据同步成功";
        } catch (Exception e) {
            return "需求数据同步失败: " + e.getMessage();
        }
    }

    /**
     * 同步需求数据（xuqiu → issue）- 可配置分页大小
     * @param pageSize 每页同步的记录数
     */
    @GetMapping("/syncXuqiuToIssue/{pageSize}")
    public String syncXuqiuToIssue(@PathVariable int pageSize) {
        try {
            if (pageSize <= 0 || pageSize > 10000) {
                return "分页大小必须在1-10000之间";
            }
            dataSyncService.syncXuqiuToIssue(pageSize);
            return "需求数据同步成功（每页" + pageSize + "条）";
        } catch (Exception e) {
            return "需求数据同步失败: " + e.getMessage();
        }
    }

    /**
     * 同步客户数据（kehu → project）
     */
    @GetMapping("/syncKehuToProject")
    public String syncKehuToProject() {
        try {
            dataSyncService.syncKehuToProject();
            return "客户数据同步成功";
        } catch (Exception e) {
            return "客户数据同步失败: " + e.getMessage();
        }
    }

    /**
     * 同步娱乐场数据（casinolist → t_company）
     */
    @GetMapping("/syncCasinoToCompany")
    public String syncCasinoToCompany() {
        try {
            dataSyncService.syncCasinoToCompany();
            return "娱乐场数据同步成功";
        } catch (Exception e) {
            return "娱乐场数据同步失败: " + e.getMessage();
        }
    }

    /**
     * 同步所有数据
     */
    @GetMapping("/syncAll")
    public String syncAll() {
        try {
            dataSyncService.syncAllData();
            return "所有数据同步成功";
        } catch (Exception e) {
            return "数据同步失败: " + e.getMessage();
        }
    }
}